/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package construtora.limiar.dao;

import construtora.limiar.dao.generic.AbstractDAO;
import construtora.limiar.dao.generic.DAOEngine;
import construtora.limiar.dao.generic.IDAO;
import construtora.limiar.models.Insumo;
import construtora.limiar.models.generic.IModel;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author michel
 */
public class InsumoDAO extends AbstractDAO implements IDAO{

    public InsumoDAO() {
        this.table = "insumo";
    }
    
    @Override
    public String[][] getFields(IModel model) {
        Insumo insumo = (Insumo) model;
        String[][] fields = new String[10][2];
        fields[0][0] = "descricao";
        fields[0][1] = "'" + insumo.getDescricao() + "'";
        fields[1][0] = "fabricante";
        fields[1][1] = "'" + insumo.getFabricante() + "'";
        fields[2][0] = "tipo";
        fields[2][1] = "'" + insumo.getTipo() + "'";        
        fields[3][0] = "peso";
        fields[3][1] = "'" + insumo.getPeso().toString() + "'";
        fields[4][0] = "cor";
        fields[4][1] = "'" + insumo.getCor() + "'";
        fields[5][0] = "unidade";
        fields[5][1] = "'" + insumo.getUnidade() + "'";
        fields[6][0] = "data_de_validade";
        fields[6][1] = "'" + insumo.getDataValidade().toString() + "'";
        fields[7][0] = "quantidade";
        fields[7][1] = "'" + insumo.getQuantidade().toString() + "'";
        fields[8][0] = "quantidade_minima";
        fields[8][1] = "'" + insumo.getQuantidadeMinima().toString() + "'";
        fields[9][0] = "status";
        fields[9][1] = "'" + insumo.getStatus() + "'";
        return fields;
    }

    @Override
    public IModel fetchOne(IModel model) {
        String where = this.getDefaultWhere(model);
        List<Insumo> list = (List<Insumo>) this.fetchAll(where, null, null, null);
        if (list != null && list.size() > 0)
            return list.get(0);
        else
            return null;
    }

    @Override
    public List<? extends IModel> fetchAll(String where, String order, Integer limit, Integer offset) {
        List<Insumo> list = new ArrayList<Insumo>();
        ResultSet rs = DAOEngine.fetchAll(this.table, where, order, limit, offset);
        try {
            while (rs.next()){
                Insumo insumo = new Insumo();
                insumo.setId(rs.getInt("id_insumo"));
                insumo.setDescricao(rs.getString("descricao"));
                insumo.setFabricante(rs.getString("fabricante"));
                insumo.setTipo(rs.getString("tipo"));
                insumo.setPeso(rs.getDouble("peso"));
                insumo.setCor(rs.getString("cor"));
                insumo.setUnidade(rs.getString("unidade"));
                insumo.setDataValidade(rs.getDate("data_de_validade"));
                insumo.setQuantidade(rs.getInt("quantidade"));
                insumo.setQuantidadeMinima(rs.getInt("quantidade_minima"));
                insumo.setStatus(rs.getString("status"));
                list.add(insumo);
            }
            return list;
        }catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    
}
